/**
 * 管理员用户验证中间件
 * 验证管理员用户相关的请求数据
 */

const { body, validationResult } = require('express-validator');

/**
 * 验证管理员用户数据
 */
const validateAdminUser = [
  // 验证用户名
  body('username')
    .isLength({ min: 3, max: 50 })
    .withMessage('用户名长度必须在3-50个字符之间')
    .matches(/^[a-zA-Z0-9_]+$/)
    .withMessage('用户名只能包含字母、数字和下划线'),

  // 验证密码（仅在创建或修改密码时需要）
  body('password')
    .optional()
    .isLength({ min: 6 })
    .withMessage('密码长度至少为6个字符'),

  // 验证角色
  body('role')
    .optional()
    .isIn(['superadmin', 'admin', 'editor'])
    .withMessage('角色必须是 superadmin, admin 或 editor'),

  // 验证状态
  body('status')
    .optional()
    .isIn(['active', 'inactive', 'locked'])
    .withMessage('状态必须是 active, inactive 或 locked'),

  // 处理验证结果
  (req, res, next) => {
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
      return res.status(400).json({
        error: 'ValidationError',
        message: '数据验证失败',
        details: errors.array()
      });
    }
    next();
  }
];

module.exports = {
  validateAdminUser
};